import { v4 as uuidv4 } from 'uuid';

const getUuid = () => {
    return uuidv4();
};

// get file abs path, only available in electron:
// https://github.com/electron/electron/blob/master/docs/api/file-object.md
const getFilePath = (file) => {
    return file.path;
}

const getFileNameWithoutExt = (file) => {
    return file.name.substring(0, file.name.lastIndexOf("."))
}

/**
 * 获取 file 的文件后缀名(包含 .)。xx.mp3 => .mp3
 * @param {} file 
 * @returns 
 */
const getFileExt = (file) => {
    if (file.name.includes(".")) {
        // 一律转为小写
        return `.${file.name.split('.').pop().trim().toLowerCase()}`
    }
}

/**
 * 获取文件格式。xx.mp3 => mp3
 * @param {} file 
 * @returns 
 */
const getFileFormat = (file) => {
    if (file.name.includes(".")) {
        // 一律转为小写
        return `${file.name.split('.').pop().trim().toLowerCase()}`
    }
}

/**
 * 判断文件是否是文件夹
 * TODO：获取结果不准确，比如 dds 文件获取就不对，找时间查查 electron 中是否可以
 * @param {} file 
 * @returns 
 */
const fileIsDire = (file) => {
    // console.log("file.kind: " + file.kind)

    // const item = file.webkitGetAsEntry();
    // if (item.isDirectory) {
    //     console.log(item.name + " 是文件夹");
    // } else {
    //     console.log(item.name + " 是文件");
    // }

    return file.type === "";
}

/**
 * 从 window.location 中解析得到 route
 * 比如：http://localhost:8083/#/MultiOpen => /MultiOpen
 * 注意：这个是从字符串解析，只适用这个项目
 * @returns 
 */
const getRoutePath = () => {
    return `/${window.location.href.split('/').pop()}`;
}

const isEmptyStr = (s) => {
    if (s == undefined || s == null || s === '') {
        return true
    }
    return false
}

/**
 * console.log(convertSecondsToHMS(100));  // 输出: 01:40
 * console.log(convertSecondsToHMS(3660)); // 输出: 01:01:00
 * console.log(convertSecondsToHMS(7200)); // 输出: 02:00:00
 * @param {*} seconds 
 * @returns 
 */
const convertSecondsToHMS = (seconds) => {
    const hours = Math.floor(seconds / 3600);
    const minutes = Math.floor((seconds % 3600) / 60);
    const remainingSeconds = Math.floor(seconds % 60);

    const formattedMinutes = String(minutes).padStart(2, '0');
    const formattedSeconds = String(remainingSeconds).padStart(2, '0');

    if (hours > 0) {
        const formattedHours = String(hours).padStart(2, '0');
        return `${formattedHours}:${formattedMinutes}:${formattedSeconds}`;
    } else {
        return `${formattedMinutes}:${formattedSeconds}`;
    }
}

const convertBytesToMB = (bytes) => {
    // const megabytes = bytes / (1024 * 1024);
    // return megabytes.toFixed(2); // 保留两位小数

    // mac 上居然是 1000
    const megabytes = bytes / (1000 * 1000);
    return megabytes.toFixed(2); // 保留两位小数
}

export {
    convertBytesToMB, getUuid, getFilePath, getFileNameWithoutExt, getFileExt, getFileFormat, fileIsDire, getRoutePath, isEmptyStr, convertSecondsToHMS
};